package com.qf.factory;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * projectName: wokepase1
 *
 * @author: 强力
 * time: 2021/8/28 10:11
 * description:
 */
public class BeanFactory {
    private Properties properties = new Properties();
    public BeanFactory(){}
    /**
     * 构造方法
     * @param config 配置文件位置以及名字
     * @throws Exception
     */

    public BeanFactory(String config) throws IOException {
        // 通过IO读取加载配置文件
        InputStream is = BeanFactory.class.getResourceAsStream(config);
        properties.load(is);
    }
    /**
     * 通过javaBean名字获取类的实例化对象
     * @param beanName bean名字
     * @return
     */
    public Object getBean(String beanName) throws Exception {
        //1. 通过bean的名字到资源文件中获取这个对应的实现类的全限定名
        String classPath = properties.getProperty(beanName);
        if(classPath!=null){
            Class claz = Class.forName(classPath);
            // 2.反射：获得对象
            return claz.newInstance();
        }
        return null;
    }

}
